﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program2
    {
        public static float money = 0;
        static void Main(string[] args)
        {
            //第二题：
            //编写一个程序，用以接收用户输入的两个浮点型的数值，一个值表示用户想要存放在银行账户中的余额，另一个值表示用户想要从银行账户中提取的金额。
            //实现存取款功能，
            //用户功能选择：1、存款，2、取款
            //取款时：
            //当用户想要提取的金额大于余额时，请手动抛出一个ArgumentOutOfRangeException 参数超出范围的异常，异常信息可以写“取款金额大于余额，请重新输入”
            //，如此以确保取款金额始终不大于当前余额。
            //操作结束，打印输出余额是多少。
            //最后再添加catch一般异常 Exception，使得数据类型转换的异常也能被捕获到。
            Console.WriteLine("请输入：1.存款  2.取款");
            int a = int.Parse(Console.ReadLine());
            switch (a)
            {
                case 1:
                    deposit(ref money);
                    break;
                case 2:
                    withdrawal(ref money);
                    break;
                default:
                    Console.WriteLine("输入错误！请重新输入！");
                    Main(null);
                    break;
            }
        }
        static void deposit(ref float money)
        {
            float a = 0 ;
            try
            {
                Console.WriteLine("请输入存的金额：");
                a = float.Parse(Console.ReadLine());
            }
            catch (Exception e)
            {
                Console.WriteLine("捕获异常");
                Console.WriteLine("处理成功");
                Console.WriteLine(e.Message);
            }
            finally
            {
                money += a ;
                Console.WriteLine("余额：{0}",money);
                Main(null);
            }
        }
        static void withdrawal(ref float money)
        {
            try
            {
                Console.WriteLine("请输入取的金额：");
                float a = float.Parse(Console.ReadLine());
                if (a > money)
                {
                    throw new ArgumentOutOfRangeException();
                }
                else
                {
                    money -= a ;
                    Console.WriteLine("余额：{0}",money);
                }
            }
            catch (ArgumentOutOfRangeException e)
            {
                Console.WriteLine("取款金额大于余额，请重新输入");
                Console.WriteLine("异常已处理");
                Console.WriteLine(e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("捕获异常");
                Console.WriteLine("异常已处理");
                Console.WriteLine(e.Message);
            }
            finally
            {
                Main(null);
            }
        }
    }
}
